package footballtest;


/**
 * 赌博机
 */
public class Gamble {
	
	/**
	 * 赌博机的硬币数量
	 */
	private long coinsNum;
	
	/**
	 * 新建一个赌博机, 内部硬币数量为coinsNum
	 * @param coinsNum
	 */
	public Gamble(long coinsNum) {
		this.coinsNum = coinsNum;
	}
	
	/**
	 * 放入coinsNum个硬币
	 * 有25%的几率返回n个硬币
	 * @param coinsNum
	 * @return 返回硬币数
	 */
	public long putIn(long coinsNum) {
		return putIn(coinsNum, 0.45f);
	}
	
	/**
	 * 获取赌博机的硬币数量
	 * @return
	 */
	public long getCoinsNum() {
		return this.coinsNum;
	}
	
	/**
	 * 放入coinsNum个硬币
	 * 有percent的几率返回n个硬币
	 * @param coinsNum
	 * @return 返回硬币数
	 */
	private synchronized long putIn(long coinsNum, float percent) {
		this.coinsNum += coinsNum;//放入
		if(Util.isHappen(percent)) {
			return (long) getOut(coinsNum << 1);//返回双倍数量的硬币
		} else {
			return 0;
		}
	}
	
	/**
	 * 吐出coinsNum个硬币
	 */
	private synchronized long getOut(long coinsNum) {
		this.coinsNum -= coinsNum;
		return coinsNum;
	}

	@Override
	public String toString() {
		return "赌博机硬币数量:" + this.coinsNum;
	}
}
